package com.example.video.util.download;

import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

@Slf4j
public class FileUtil {

    // 下载图片并保存到本地文件
    public static boolean downloadImage(String imageUrl, String savePath) {
        boolean flag = false;
        try {
            // 创建保存文件的 File 对象
            File file = new File(savePath);
            // 如果文件所在文件夹不存在，则创建文件夹
            file.getParentFile().mkdirs();
//            log.info("FileUtil -> downloadImage -> mgs : file: "+file.getParentFile());
            // 创建 URL 对象
            URL url = new URL(imageUrl);
            // 打开连接
        URLConnection connection = null;

            connection = url.openConnection();


        // 获取输入流
            InputStream inputStream = connection.getInputStream();

            // 创建输出流
            FileOutputStream outputStream = new FileOutputStream(savePath);

            // 读取数据并写入文件
            byte[] buffer = new byte[4096];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            // 关闭流
            outputStream.close();
            inputStream.close();
            flag = true;
        } catch (IOException e) {
            log.info("FileUtil -> downLoadImage ->errMsg: 文件下载错误：" + e.getMessage());

        }
        return flag;
    }

    public static boolean deleteFile(String filePath) {

        // 创建 File 对象
        File file = new File(filePath);
        boolean deleted = true;
        // 判断文件是否存在
        if (file.exists()) {
            // 尝试删除文件
            deleted = file.delete();

            // 检查删除操作是否成功
            if (deleted) {
                log.info("文件删除成功！");
            } else {
                log.info("文件删除失败。");
            }
        } else {
            log.info("文件不存在，无需删除。");
        }
        return deleted;

    }

}
